#include "jianzhi/41.h"
#include "gtest/gtest.h"

TEST(TestJianzhiSolutions, TestProblem41_1)
{
    jianzhi_41::MedianFinder mf;
    mf.addNum(1);
    mf.addNum(2);
    ASSERT_FLOAT_EQ(mf.findMedian(), 1.5);
    mf.addNum(3);
    ASSERT_FLOAT_EQ(mf.findMedian(), 2.0);
}

TEST(TestJianzhiSolutions, TestProblem41_2)
{
    jianzhi_41::MedianFinder mf;
    mf.addNum(2); //2
    ASSERT_FLOAT_EQ(mf.findMedian(), 2.0);
    mf.addNum(3); //2,3
    ASSERT_FLOAT_EQ(mf.findMedian(), 2.5);
    mf.addNum(1); //1,2,3
    ASSERT_FLOAT_EQ(mf.findMedian(), 2.0);
    mf.addNum(5); //1,2,3,5
    ASSERT_FLOAT_EQ(mf.findMedian(), 2.5);
    mf.addNum(7); //1,2,3,5,7
    ASSERT_FLOAT_EQ(mf.findMedian(), 3.0);
    mf.addNum(4); //1,2,3,4,5,7
    ASSERT_FLOAT_EQ(mf.findMedian(), 3.5);
    mf.addNum(4); //1,2,3,4,4,5,7
    ASSERT_FLOAT_EQ(mf.findMedian(), 4.0);
    mf.addNum(8); //1,2,3,4,4,5,7,8
    ASSERT_FLOAT_EQ(mf.findMedian(), 4.0);
    mf.addNum(9); //1,2,3,4,4,5,7,8,9
    ASSERT_FLOAT_EQ(mf.findMedian(), 4.0);
    mf.addNum(10); //1,2,3,4,4,5,7,8,9,10
    ASSERT_FLOAT_EQ(mf.findMedian(), 4.5);
    mf.addNum(11); //1,2,3,4,4,5,7,8,9,10,11
    ASSERT_FLOAT_EQ(mf.findMedian(), 5.0);
    mf.addNum(12); //1,2,3,4,4,5,7,8,9,10,11,12
    ASSERT_FLOAT_EQ(mf.findMedian(), 6.0);
}